"""
这是登录鉴权的中间件程序，其实就是一个类
process_request是进入中间件 process_response是离开中间件程序
用于判断是否登录系统，request.session.get('info')，session变量在views/account.py中定义
"""

# 导入模块
from django.utils.deprecation import MiddlewareMixin
from django.shortcuts import render, redirect


class AuthMiddleWare(MiddlewareMixin):
    """ 中间件 """

    def process_request(self, request):
        # print('M1.process_request，进来了')
        # (重要）排除不需要进行登录验证的页面，例如登录界面，不然回造成死循环
        # request.path_info 当前页面的URL，例如：'/login/'
        if request.path_info in ['/login/', '/image/code/']:
            return  # 返回None

        # 判断是否已登录，返回None则继续向下一个中间件执行，最终到达视图函数
        info = request.session.get('info')
        # print(info)
        if info:
            return  # 返回None
        # 没有登录，则返回登录界面
        return redirect('/login/')

    def process_response(self, request, response):
        # print('M1.process_request,走了')
        return response
